在类或方法中初始化Tkinter吗?

时间:2019-09-25 03:09:14

标签: python class tkinter initialization

是否可以将我的所有代码初始化为自己的类,以将tKinter或pygame的显示初始化。它所有的代码在进入主循环之前都会执行一次?

我正在编写同时使用pygame图形显示和GUI的tKinter框架的东西。一切正常,但是在我的主代码行中没有缩进的情况下看起来很混乱。没什么聪明的,只是阅读显示器的分辨率,然后使用它来调整我的PyGame和Tkinter框架的大小和位置。

我已经编辑了下面的代码以显示我的主要循环以及如何更新tkinter和pygame的显示。一切正常。

我只是想知道我是否可以通过使用类在tkinter显示屏上保留所有想要的丁丁等东西来整理事情。

希望我可以将其全部放在一个类中。抱歉,我是菜鸟,正在用python玩耍!

import random
import math
import os
import pygame
import numpy as np
#from tkinter import *
#from tkinter import ttk
from tkinter import Tk, Button, Label, LabelFrame, PhotoImage, Radiobutton
from tkinter import messagebox, DISABLED, NORMAL, Menu

pygame.init()
infoObject = pygame.display.Info()          #Read video mode full resolution 
pygame.display.set_mode((infoObject.current_w, infoObject.current_h))   #Intialize pygame window to full screen mius 400 on left (to be used for tkinter main window)
SMALL_TEXT = pygame.font.Font('freesansbold.ttf', 12)
os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (0, 30) #set placement for next window in windows env
gameDisplay = pygame.display.set_mode((infoObject.current_w - 400,infoObject.current_h - 70), pygame.RESIZABLE)
pygame.display.set_caption('Collision Detection')
pygame.font.init() # Set up text ops


root = Tk()
geom = (str(400) + 'x' + str(infoObject.current_h - 70) + '+' + str(infoObject.current_w - 410) + '+' + str(0))
root.geometry(geom)
root.configure(background='gray70')
root.title('Vessel Control')

# Create a couple test buttons and labels on root form, to be updated by code in mainloop


lab = Label(root, text="Don't Push The Button!")
lab.grid(row=0, column=0)
but = Button(root, text="Push Me", command=changebut)
but.grid(row=1, column=0)
posxlab = Label(root, text='USV X Position (m): ')
posxlab.grid(row=2, column=0)


# Here i set up the rest of the junk for my program

# Then i start my own main loop, not usuing tkinters.

# Main loop

while not gameExit:

    #And my full code is in here, a few thousand lines or so



    pygame.display.update()   #update pygame display
    root.update_idletasks()   #process tkinter events
    root.update()             #Update tkinter window
    clock.tick(FRAME_RATE)


pygame.quit()
quit()

0 个答案:

没有答案