Инициализировать Tkinter внутри класса или метода? - PullRequest
0 голосов
/ 25 сентября 2019

Можно ли поместить весь мой код для инициализации моего дисплея tKinter или pygame в его собственный класс, просто чтобы привести в порядок вещи.Это весь код, который выполняется один раз, прежде чем я попаду в основной цикл?

Я пишу что-то, что использует графический интерфейс Pygame и фрейм tKinter для GUI.Все работает нормально, но кажется, что все это без грязи без отступов в моей основной строке кода.Ничего хитрого, просто читая разрешение монитора, а затем используя его, чтобы настроить размер и расположение моих кадров PyGame и Tkinter.

Я отредактировал код ниже, чтобы показать свои основные циклы и то, как я обновляю дисплеи tkinter и pygame.Все работает хорошо.

Мне просто интересно, могу ли я привести в порядок вещи, используя класс для хранения всех кнопок и т. Д., Которые я хочу на дисплее tkinter.

Жаль, что я не мог бы все это сложитьв классе или что-то.Извините, я нуб, получаю взрыв, играя с питоном!

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...